<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>then的链式调用</title>
</head>
<body>
<!--
    Promise 实例.then() 返回的是一个【新的 Promise 实例】，它的值和状态由什么决定？
        1. 简单表达：由 then() 所指定的回调函数执行的结果决定。
        2. 详细表达：
            (1). 如果 then 所指定的回调返回的是非 Promise 值a：
                那么【新 Promise 实例】状态为：成功（fulfilled），成功的 value 为 a
                注意：非 Promise 值包括：空数组[]，空对象{}，字符串，false....
            (2). 如果 then 所指定的回调返回的是一个 Promise 实例p：
                那么【新 Promise 实例】的状态、值，都与 p 一致。
            (3). 如果 then 所指定的回调抛出异常：
                那么【新 Promise 实例】状态为 rejected，reason 为抛出的那个异常
 -->
<script type="text/javascript">
    const p = new Promise((resolve, reject) => {
        setTimeout(() => {
            reject('出现了异常')
        }, 1000)
    })
    p.then(
        value => {
            console.log('成功了1', value)
        },
        reason => {
            console.log('失败了1', reason)
            return Promise.resolve('ok')
        }
    ).then(
        value => {
            console.log('成功了2', value)
            throw 999
        },
        reason => {
            console.log('失败了2', reason)
        }
    ).then(
        value => {
            console.log('3成功了', value)
        },
        reason => {
            console.log('3失败了', reason)
        }
    )


</script>
</body>
</html>
